Coder Social home page Coder Social logo

lwsraja's Introduction

RAJA v0.6.0

Build Status Join the chat at https://gitter.im/llnl/raja Coverage

RAJA is a collection of C++ software abstractions, being developed at Lawrence Livermore National Laboratory (LLNL), that enable architecture portability for HPC applications. The overarching goals of RAJA are to:

  • Make existing (production) applications portable with minimal disruption
  • Provide a model for new applications so that they are portable from inception.

RAJA uses standard C++11 -- C++ is the predominant programming language in which many LLNL codes are written. RAJA is rooted in a perspective based on substantial experience working on production mesh-based multiphysics applications at LLNL. Another goal of RAJA is to enable application developers to adapt RAJA concepts and specialize them for different code implementation patterns and C++ usage, since data structures and algorithms vary widely across applications.

RAJA shares goals and concepts found in other C++ portability abstraction approaches, such as Kokkos and Thrust. However, it includes concepts that are absent in other models and which are fundamental to LLNL codes.

It is important to note that RAJA is very much a work-in-progress. The community of researchers and application developers at LLNL that are actively contributing to it and developing new capabilities is growing. The publicly-released version contains only core pieces of RAJA as they exist today. While the basic interfaces are fairly stable, the implementation of the underlying concepts is being refined. Additional features will appear in future releases.

Quick Start

The RAJA code lives in a GitHub repository. To clone the repo, use the command:

git clone --recursive https://github.com/llnl/raja.git

Then, you can build RAJA like any other CMake project, provided you have a C++ compiler that supports the C++11 standard. The simplest way to build the code is to do the following in the top-level RAJA directory (in-source builds are not allowed!):

mkdir build
cd build
cmake ../
make

More details about RAJA configuration options are located in the User Documentation.

User Documentation

The RAJA User Guide and Tutorial is the best place to start learning about RAJA and how to use it.

Other references that may be of interest include:

To cite RAJA, please use the following reference:

Related Software

The RAJA Performance Suite contains a collection of loop kernels implemented in multiple RAJA and non-RAJA variants. We use it to monitor and assess RAJA performance on different platforms using a variety of compilers.

The RAJA Proxies repository contains RAJA versions of several important HPC proxy applications.

CHAI provides a managed array abstraction that works with RAJA to automatically copy data used in RAJA kernels to the appropriate space for execution. It was developed as a complement to RAJA.

Mailing List

Interested in keeping up with RAJA or communicating with its developers and users? Please join our mailing list at Google Groups:

If you have questions, find a bug, or have ideas about expanding the functionality or applicability of RAJA and are interested in contributing to its development, please do not hesitate to contact us. We are very interested in improving RAJA and exploring new ways to use it.

Contributions

The RAJA team follows the GitFlow development model. Folks wishing to contribute to RAJA, should include their work in a feature branch created from the RAJA develop branch. Then, create a pull request with the develop branch as the destination. That branch contains the latest work in RAJA. Periodically, we will merge the develop branch into the master branch and tag a new release.

Authors

The original developers of RAJA are:

Please see the {RAJA Contributors Page](https://github.com/LLNL/RAJA/graphs/contributors), to see the full list of contributors to the project.

Release

Copyright (c) 2016-2017, Lawrence Livermore National Security, LLC.

Produced at the Lawrence Livermore National Laboratory.

All rights reserved.

LLNL-CODE-689114 OCEC-16-063

Unlimited Open Source - BSD Distribution

For release details and restrictions, please read the RELEASE, LICENSE, and NOTICE files, also linked here:

lwsraja's People

Contributors

davidbeckingsale avatar rhornung67 avatar trws avatar ajkunen avatar artv3 avatar willkill07 avatar mrburmark avatar jonesholger avatar vlkale avatar davidpoliakoff avatar pearce8 avatar jeffhammond avatar dannnno avatar tepperly avatar gzagaris avatar timrlaw avatar tgamblin avatar koning avatar

Stargazers

 avatar

Watchers

James Cloos avatar  avatar

lwsraja's Issues

In which code file of the RAJA library code does RAJA initialize and finalize its variables and data structures?

Assignee: David Beckingsale (@david: I can't assign to you through GitHub at the moment - I'll work to fix this soon for any other issues).

Question: In which code file of the RAJA library code does RAJA initialize and finalize its variables and data structures?

Details: I ask this question because I believe I need this information in order to insert calls for initializing and finalizing my lightweight loop scheduling, i.e., the policy omp_lws, library in that part of the library code of RAJA.

Problem with loop_next_statdynstaggered()

There's an issue when compiling the example Jacobi code with RAJA using the policy omp-lws in the build directory of RAJA.

[ 77%] Built target red-black-gauss-seidel
[ 79%] Built target tut_add-vectors
[ 81%] Built target tut_offset-layout
[ 83%] Built target pi-reduce_vs_atomic
[ 85%] Built target cpu-shmem-ltimes
[ 87%] Built target tut_nested-loop-reorder
[ 89%] Built target tut_indexset-segments
[ 91%] Built target tut_atomic-binning
[ 93%] Built target tut_batched-matrix-multiply
[ 95%] Built target tut_dot-product
[ 96%] Linking CXX executable ../bin/jacobi
CMakeFiles/jacobi.dir/jacobi.cpp.o: In function main': jacobi.cpp:(.text.startup+0x51f): undefined reference to loop_start_statdynstaggered(int, int, int*, int*, int, int)'
jacobi.cpp:(.text.startup+0x674): undefined reference to loop_next_statdynstaggered(int*, int*, int)' jacobi.cpp:(.text.startup+0x72d): undefined reference to loop_start_statdynstaggered(int, int, int*, int*, int, int)'
jacobi.cpp:(.text.startup+0x790): undefined reference to `loop_next_statdynstaggered(int*, int*, int)'
collect2: error: ld returned 1 exit status
examples/CMakeFiles/jacobi.dir/build.make:95: recipe for target 'bin/jacobi' failed
make[2]: *** [bin/jacobi] Error 1
CMakeFiles/Makefile2:3053: recipe for target 'examples/CMakeFiles/jacobi.dir/all' failed
make[1]: *** [examples/CMakeFiles/jacobi.dir/all] Error 2
Makefile:140: recipe for target 'all' failed
make: *** [all] Error 2

The problem Symbol ‘loop_next_statdynstaggered()’ , a function in my loop scheduling library isn't being not found. The vSched.c source file to CMakeLists.txt in RAJA ought to fix the problem.

However, when rebuilding from scratch, the problem comes up again.

I may be missing something trivial here.

Add

Is your feature request related to a problem? Please describe.
We need to demonstrate usage of the omp-lws policy to more than one example for overall proof of concept.

Describe the solution you'd like

We ought to make the omp-lws policy be applied in another code in the examples directory, e.g., wave eqn.

Describe alternatives you've considered

We can consider Lulesh, but the code is more complex and has several other parameters to experiment with.

Additional context

Having this would be useful for showing in a conference presentation for, e.g., SC18, or to promote Vivek's work.

Finding functions in OpenMP library.

When running lwsRAJA on a mac, I get the following issue. The problem has to do with the application code not finding functions from the OpenMP library.

[ 6%] Built target RAJA
[ 8%] Built target gtest
[ 10%] Built target gtest_main
[ 11%] Linking CXX executable ../../tests/blt_openmp_smoke
Undefined symbols for architecture x86_64:
"___kmpc_critical", referenced from:
_.omp_outlined. in blt_openmp_smoke.cpp.o
"___kmpc_end_critical", referenced from:
_.omp_outlined. in blt_openmp_smoke.cpp.o
"___kmpc_fork_call", referenced from:
_main in blt_openmp_smoke.cpp.o
"_omp_get_max_threads", referenced from:
_.omp_outlined. in blt_openmp_smoke.cpp.o
"_omp_get_num_threads", referenced from:
_.omp_outlined. in blt_openmp_smoke.cpp.o
"_omp_get_thread_num", referenced from:
_.omp_outlined. in blt_openmp_smoke.cpp.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make[2]: *** [tests/blt_openmp_smoke] Error 1
make[1]: *** [blt/tests/CMakeFiles/blt_openmp_smoke.dir/all] Error 2
make: *** [all] Error 2

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.