Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Sparse Matrix-vector multiplication #2

Open
wants to merge 438 commits into
base: master
Choose a base branch
from
Open

Conversation

wongalvis14
Copy link
Owner

No description provided.

mppf added 29 commits July 24, 2019 13:43
See e.g. coerce-owned-types-on-init.chpl

  var x:Parent = new owned Child();
PR chapel-lang#8083 disallowed coercions when processing type arguments,
but allowed it for class heirachy. This commit adjusts new logic
in ResolutionCandidate to follow that rule.
for test/classes/deitz/types/type_in_class3.chpl but
the following commit is also necessary
for test/classes/deitz/types/type_in_class3.chpl
See test/classes/diten/class_nest_simple.chpl
Relevant for test/errhandling/lydia/notAnErrorSubtype-thrown.chpl
See test/modules/diten/returnClassDiffModule4.chpl
See test enhancements for the cases now working,
including creating other nilability variant of
owned/shared.
and always allow borrowing from a c_void_ptr...
See extern/ferguson/externblock/fptr3
mppf and others added 29 commits August 1, 2019 15:28
See param/bharshbarg/paramFieldType
…e-memleaks

Fix memory leaks in test-radix-bucketizer.chpl

Resolves chapel-lang#13569, plugging the memory leak in

    test/library/packages/Sort/correctness/test-radix-bucketizer.chpl

When setting up the AST for a task reduce intent, I was using
PRIM_ASSIGN instead of calling the `=` function (which is a really bad
idea when used on an array btw) to store the result of globalOp.generate()
into the outer variable.  Also, the task-private shadow variables were not
getting autoDestroy-ed. This fixes these bugs.

While there, add multi-arg versions of `Expr::insertAfter(Expr*)`, for convenience.
A single varargs version instead would be even nicer.

r: @mppf
When we built the module on a CLE5 machine, we needed to load a newer
cmake and python in order to build llvm. That's not needed on CLE6 or
newer, so stop loading them. Note that the arm module already stopped
doing this since it was running on a newer machine. Additionally remove
the code from the shasta module, it isn't building llvm support yet, but
when it does this code won't be needed.
…asterip

Replace use of GASNET_MASTERIP and GASNET_WORKERIP with their new counterparts

Replaces GASNET_MASTERIP and GASNET_WORKERIP in the common cron
script for gasnet darwin testing.

This should exhibit no change in behavior, as the runtime will set them based
on the values of the environment variables that replace them, CHPL_RT_MASTERIP
and CHPL_RT_WORKERIP.
…module-build

Stop loading a cmake module for the XC-x86 module build

[reviewed by @gbtitus]

When we built the module on a CLE5 machine, we needed to load a newer
cmake and python in order to build llvm. That's not needed on CLE6 or
newer, so stop loading them. Note that the arm module already stopped
doing this since it was running on a newer machine. Additionally, remove
the code from the shasta module. It isn't building llvm support yet, but
when it does this code won't be needed.
When the module gets moved to modules/packages/, these sorts of updates will
no longer be necessary because our script about library line numbers will
trigger.  While it remains a "user code", we do still want to ensure that line
numbers are accurate, though.
Fix line numbers on this .bad file
[pointed out by Michael, not reviewed]

When the module gets moved to modules/packages/, these sorts of updates will
no longer be necessary because our script about library line numbers will
trigger. While it remains a "user code", we do still want to ensure that line
numbers are accurate, though.
The machine we're building on doesn't have the versions we used to pin
to. Pick defaults that should be ok for nightly testing, but likely not
for an official release. We'll revisit this later, but for now just try
to get nightly testing going again.
…gen-compilers

Temporarily bump our xc-x86 gen compilers

The machine we're building on doesn't have the versions we used to pin
to. Pick defaults that should be ok for nightly testing, but likely not
for an official release. We'll revisit this later, but for now just try
to get nightly testing going again.
…educe-example

Add a reproducer for chapel-lang#13569

While chapel-lang#13569 was fixed in chapel-lang#13604, we would like to have a dedicated
small reproducer to ensure that the issue stays in check.
Allow loading a default module, and change what version of libsci is
being pinned to for cce
More attempts to fix XC-x86 module

Allow loading a default module, and change what version of libsci is
being pinned to for cce
…est-good

Address analysis/alias/array-of-classes.chpl failures with NUMA

Follow-on to PR chapel-lang#13447.

Test change only, not reviewed.
…ctory

As a result, make abiIncompatible's compopts file into a directory wide COMPOPTS
file.

These pass today without changes (as expected)
…n Python

We were expecting this to require effort, but Python seems to be being nice and
allowing the conversion/converting the type into the type we want on its own.
Going to test on linux to be certain it isn't just a clang thing.
…lang#13649)

Add a future for the German sharp S upper/lower case anomaly (chapel-lang#13649)

[new future, not reviewed]

As discussed in chapel-lang#13648 , the Unicode German sharp S takes up a different number of bytes for its upper vs. lower case versions. This change adds a future to track the string methods' assumption that the upper and lower case versions would encode to the same number of bytes.

Tested on Cygwin, Darwin, and Linux (including Cray XC systems).
Updates towards enabling nilability checks

For Cray/chapel-private#305

This PR addresses about the first 100 failures with --no-legacy-nilable-clases.
We are working on getting clean testing in that mode in preparation
for enabling it by default.

Compiler changes:
 * normalizes e.g. `_owned(anymanaged MyClass)` to `_owned(borrowed MyClass)`
 * improves error checking for PRIM_INIT_VAR and for errorIfNonNilableType
   when checking for default initialization. In particular, allow some
   default-init/assign patterns through the use of FLAG_INITIALIZED_LATER.

Module changes:
 * use nilable types in SparseBlockDom
 * bulkAdd_help uses a `locale?` in the addOn argument
 * Add error for setting a class type to `nil` via cast or `=`
 * Adjusts makeArrayFromOpaque for nilibility
 * Adds a work-around for associative arrays of `owned`
 * Adjusts DistributedBag / DistributedDeque for nilability
 * Adjusts the TOML module for nilability and to remove `=` overloads on classes
     chapel-lang#5358 (comment)
   and adjusts mason code to use the new  TOML `set` methods
 * Adjusts ZMQ.chpl to compile with nilability checking enabled by adjusting
   the initializers to remove the possibility that any fields store `nil`.
 * Adjusts the conditional in the read function for a channel to make a copy
   of the argument to read in to - in order avoid default initializing,
   which does not work for non-nilable types.
 * Adjusts the Spawn module to always initialize the `home` field.

Also adjusts a number of tests to pass with `--no-legacy-nilable-classes`.

r: @benharsh @ben-albrecht  --  merged on behalf of @mppf
GSoC 2019: Adds Primitive for calculating number of test functions
[contributed by @krishnadey30, reviewed by Lydia]

This PR adds a primitive `populate tests` which returns the number of test functions in a file.
This also define two primitives `get test by name` and `get test by index` whose functionalities will be added soon.
This PR adds test for `populate tests`

Passed a full paratest with futures
…stsOnly

Add tests of Python single locale interoperability with Chapel strings
[reviewed by @dlongnecke-cray]

It turns out, due to the magic of Cython, this just works.

The tests lock in the behavior with the expected error messages from
the C version (ensuring that `--library-python` doesn't hide them for
some reason), and that functions that take, return, or both take and
return Chapel strings are converted appropriately.

Passed on linux and darwin when Python 3 has the appropriate settings.
Skipped when Python is not set up for using Cython.
wongalvis14 pushed a commit that referenced this pull request Aug 13, 2019
* Implement some previously-missing checks.
* Improve the error messages in some cases.
* Minor fixes in two existing tests.
* Add testing of all combinations of nilability and memory management
  of lhs and rhs when initializing a variable this way:

        var lhs: <lhs type> = rhs;

The tests are added under:

    test/classes/errors/nilability-init-var/

Some improvements are implemented as additional `init=` methods or
otherwise in the modules. Other improvements are from compiler changes.

In some cases, the following code:

    var lhs: <lhs type> = rhs;
    compilerError("something");

results in compilerError() firing, whereas without that call
the compiler would report an error on the `var lhs` line.
This is because the `var lhs` error would be reported in
`insertAndResolveCasts(fn)`, which is called after
`resolveBlockStmt(fn->body)` completes successfully.

Some of the compiler changes in this PR make the compiler still report
the `var lhs` error even in the presence of a subsequent compilerError().

The all-combinations tests were created by running this script:

    classes/errors/nilability-generate.chpl

then manually adjusting two files to comment out compilerError(), see below.
I set to test them with --no-codegen, to save testing time. This is a
consideration because 28 of them compile without errors.

FUTURE WORK

* Remove the error upon `var lhs: <shared?> = <owned!>`, which is legal.
  See `init-var-oknil-shared-from-nonnil-owned.future`

* The following cases would still fire compilerError() despite an error
  in the preceding `var lhs` line. I commented out compilerError() in those
  tests to trigger the desired error messages. We want to see those messages
  ahead of compilerError().

    init-var-nonnil-borrowed-from-oknil-nil.chpl
    init-var-nonnil-unmanaged-from-oknil-nil.chpl

* In chapel-lang#11118 we preferred the error message pattern `cannot assign to <lhs>  from <rhs>`.
  There are a few places in the modules and in the compiler that
  either switch the order or say `assign <lhs> to <rhs>`.
  It would be nice to make those consistent with chapel-lang#11118.

Reviewed by / with suggestions from:  @mppf, @lydia-duncan
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.