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

TILEDARRAY_REVISION is now a runtime constant returned by TA::revision() #370

Merged
merged 3 commits into from
Oct 15, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion doc/devsamp/wiki/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
#

# List of all complete examples
set(wikiexamples user-guide-1;user-guide-1a;user-guide-2)
set(wikiexamples user-guide-1;user-guide-1a;user-guide-1b;user-guide-2)

# if target examples-tiledarray does not exist yet, create it
if (NOT TARGET examples-tiledarray)
Expand Down
29 changes: 29 additions & 0 deletions doc/devsamp/wiki/user-guide-1b.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
#include <tiledarray.h>

int main(int argc, char* argv[]) {
assert(!TA::initialized());
assert(!TA::finalized());

try {
// Initializes TiledArray
auto& world = TA_SCOPED_INITIALIZE(argc, argv);

// Do some work here.

assert(TA::initialized());
assert(!TA::finalized());
// if (argc > 1) throw "";
} // TA::finalize() called when leaving this scope
// exceptional return
catch (...) {
assert(!TA::initialized());
assert(TA::finalized());
std::cerr << "oops!\n";
return 1;
}

// normal return
assert(!TA::initialized());
assert(TA::finalized());
return 0;
}
33 changes: 33 additions & 0 deletions doc/dox/dev/Basic-Programming.md
Original file line number Diff line number Diff line change
Expand Up @@ -143,6 +143,39 @@ int main(int argc, char* argv[]) {
return 0;
}
```
In complex initialization scenarios it is convenient to be able to introspect whether TiledArray has been initialized and/or finalized. Use `TA::initialized()` and `TA::finalized()` to query whether TiledArray is currently initialized and it it has been finalized, respectively.

To make initialization of TiledArray easier in presence of exceptions (e.g., within a `try` block) or multiple return statements use macro `TA_SCOPED_INITIALIZE(argc,argv,...)` instead of calling `TA::{initialize,finalize}` explicitly:
```.cpp
#include <tiledarray.h>

int main(int argc, char* argv[]) {
assert(!TA::initialized());
assert(!TA::finalized());

try {
// Initializes TiledArray
auto& world = TA_SCOPED_INITIALIZE(argc, argv);

// Do some work here.

assert(TA::initialized());
assert(!TA::finalized());
} // TA::finalize() called when leaving this scope
// exceptional return
catch (...) {
assert(!TA::initialized());
assert(TA::finalized());
std::cerr << "oops!\n";
return 1;
}

// normal return
assert(!TA::initialized());
assert(TA::finalized());
return 0;
}
```

## Construct an array
To construct a `DistArray` object, you must supply following the meta data:
Expand Down
5 changes: 1 addition & 4 deletions examples/cc/ccd.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ using namespace TiledArray::expressions;

int main(int argc, char** argv) {
// Initialize runtime
TiledArray::World& world = TiledArray::initialize(argc, argv);
TiledArray::World& world = TA_SCOPED_INITIALIZE(argc, argv);

std::string file_name = argv[1];

Expand Down Expand Up @@ -320,11 +320,8 @@ int main(int argc, char** argv) {

} else {
std::cout << "Unable to open file: " << file_name << "\n";
// stop the madenss runtime
TiledArray::finalize();
return 1;
}

TiledArray::finalize();
return 0;
}
4 changes: 1 addition & 3 deletions examples/cc/ccsd.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ using namespace TiledArray::expressions;

int main(int argc, char** argv) {
// Initialize runtime
TiledArray::World& world = TiledArray::initialize(argc, argv);
TiledArray::World& world = TA_SCOPED_INITIALIZE(argc, argv);

std::string file_name = argv[1];

Expand Down Expand Up @@ -1191,11 +1191,9 @@ int main(int argc, char** argv) {
}

} else {
TiledArray::finalize();
std::cout << "Unable to open file: " << file_name << "\n";
return 1;
}

TiledArray::finalize();
return 0;
}
3 changes: 1 addition & 2 deletions examples/cuda/cuda_librett.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -36,12 +36,11 @@ const std::size_t N = 100;
using namespace TiledArray;

int main(int argc, char* argv[]) {
TiledArray::initialize(argc, argv);
TA_SCOPED_INITIALIZE(argc, argv);

std::vector<int> extent{N, N};
std::vector<int> perm{1, 0};

TiledArray::finalize();
return 0;
}

Expand Down
4 changes: 1 addition & 3 deletions examples/cuda/cuda_task.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -117,7 +117,7 @@ int try_main(int argc, char** argv) {
}

int main(int argc, char* argv[]) {
TiledArray::World& world = TiledArray::initialize(argc, argv);
TiledArray::World& world = TA_SCOPED_INITIALIZE(argc, argv);
try {
// Initialize runtime
try_main(argc, argv);
Expand All @@ -132,7 +132,5 @@ int main(int argc, char* argv[]) {
std::cerr << "unknown exception" << std::endl;
}

TiledArray::finalize();

return 0;
}
2 changes: 1 addition & 1 deletion examples/cuda/ta_cc_abcd_cuda.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -116,7 +116,7 @@ int main(int argc, char** argv) {

if (world.rank() == 0) {
std::cout << "TiledArray: CC T2.V term test..."
<< "\nGit HASH: " << TILEDARRAY_REVISION
<< "\nGit HASH: " << TiledArray::revision()
<< "\nNumber of nodes = " << world.size()
<< "\nocc size = " << n_occ
<< "\nocc nblocks = " << nblk_occ
Expand Down
4 changes: 1 addition & 3 deletions examples/dgemm/ta_band.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ int main(int argc, char** argv) {

try {
// Initialize runtime
TiledArray::World& world = TiledArray::initialize(argc, argv);
TiledArray::World& world = TA_SCOPED_INITIALIZE(argc, argv);

// Get command line arguments
if (argc < 2) {
Expand Down Expand Up @@ -138,8 +138,6 @@ int main(int argc, char** argv) {
<< "\n";
}

TiledArray::finalize();

} catch (TiledArray::Exception& e) {
std::cerr << "!! TiledArray exception: " << e.what() << "\n";
rc = 1;
Expand Down
2 changes: 1 addition & 1 deletion examples/dgemm/ta_cc_abcd.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -116,7 +116,7 @@ int main(int argc, char** argv) {

if (world.rank() == 0)
std::cout << "TiledArray: CC T2.V term test..."
<< "\nGit HASH: " << TILEDARRAY_REVISION
<< "\nGit HASH: " << TiledArray::revision()
<< "\nNumber of nodes = " << world.size()
<< "\nocc size = " << n_occ
<< "\nocc nblocks = " << nblk_occ
Expand Down
6 changes: 2 additions & 4 deletions examples/dgemm/ta_dense.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ int main(int argc, char** argv) {

try {
// Initialize runtime
TiledArray::World& world = TiledArray::initialize(argc, argv);
TiledArray::World& world = TA_SCOPED_INITIALIZE(argc, argv);

// Get command line arguments
if (argc < 3) {
Expand Down Expand Up @@ -75,7 +75,7 @@ int main(int argc, char** argv) {

if (world.rank() == 0)
std::cout << "TiledArray: dense matrix multiply test..."
<< "\nGit HASH: " << TILEDARRAY_REVISION
<< "\nGit HASH: " << TiledArray::revision()
<< "\nNumber of nodes = " << world.size()
<< "\nMatrix size = " << matrix_size << "x"
<< matrix_size << "\nBlock size = " << block_size
Expand All @@ -102,8 +102,6 @@ int main(int argc, char** argv) {
else
gemm_<double>(world, trange, repeat);

TiledArray::finalize();

} catch (TiledArray::Exception& e) {
std::cerr << "!! TiledArray exception: " << e.what() << "\n";
rc = 1;
Expand Down
3 changes: 1 addition & 2 deletions examples/dgemm/ta_dense_asymm.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@

int main(int argc, char** argv) {
// Initialize runtime
TiledArray::World& world = TiledArray::initialize(argc, argv);
TiledArray::World& world = TA_SCOPED_INITIALIZE(argc, argv);

// Get command line arguments
if (argc < 6) {
Expand Down Expand Up @@ -183,6 +183,5 @@ int main(int argc, char** argv) {
nullptr));
}

TiledArray::finalize();
return 0;
}
5 changes: 2 additions & 3 deletions examples/dgemm/ta_dense_new_tile.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ int main(int argc, char** argv) {

try {
// Initialize runtime
TiledArray::World& world = TiledArray::initialize(argc, argv);
TiledArray::World& world = TA_SCOPED_INITIALIZE(argc, argv);

// Get command line arguments
if (argc < 2) {
Expand Down Expand Up @@ -74,7 +74,7 @@ int main(int argc, char** argv) {

if (world.rank() == 0)
std::cout << "TiledArray: dense matrix multiply test..."
<< "\nGit HASH: " << TILEDARRAY_REVISION
<< "\nGit HASH: " << TiledArray::revision()
<< "\nNumber of nodes = " << world.size()
<< "\nMatrix size = " << matrix_size << "x"
<< matrix_size << "\nBlock size = " << block_size
Expand Down Expand Up @@ -147,7 +147,6 @@ int main(int argc, char** argv) {
<< " sec\nAverage GFLOPS = "
<< double(repeat) * flop / total_time << "\n";

TiledArray::finalize();
} catch (TiledArray::Exception& e) {
std::cerr << "!! TiledArray exception: " << e.what() << "\n";
rc = 1;
Expand Down
6 changes: 2 additions & 4 deletions examples/dgemm/ta_dense_nonuniform.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ int main(int argc, char** argv) {

try {
// Initialize runtime
TiledArray::World& world = TiledArray::initialize(argc, argv);
TiledArray::World& world = TA_SCOPED_INITIALIZE(argc, argv);

// Get command line arguments
if (argc < 2) {
Expand Down Expand Up @@ -81,7 +81,7 @@ int main(int argc, char** argv) {

if (world.rank() == 0)
std::cout << "TiledArray: dense-nonuniform matrix multiply test..."
<< "\nGit HASH: " << TILEDARRAY_REVISION
<< "\nGit HASH: " << TiledArray::revision()
<< "\nNumber of nodes = " << world.size()
<< "\nMatrix size = " << matrix_size << "x"
<< matrix_size << "\nAverage block size = " << block_size
Expand Down Expand Up @@ -141,8 +141,6 @@ int main(int argc, char** argv) {
<< " sec\nAverage GFLOPS = "
<< double(repeat) * flop / total_time << "\n";

TiledArray::finalize();

} catch (TiledArray::Exception& e) {
std::cerr << "!! TiledArray exception: " << e.what() << "\n";
rc = 1;
Expand Down
6 changes: 2 additions & 4 deletions examples/dgemm/ta_sparse.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ int main(int argc, char** argv) {

try {
// Initialize runtime
TiledArray::World& world = TiledArray::initialize(argc, argv);
TiledArray::World& world = TA_SCOPED_INITIALIZE(argc, argv);

// Get command line arguments
if (argc < 2) {
Expand Down Expand Up @@ -86,7 +86,7 @@ int main(int argc, char** argv) {

if (world.rank() == 0)
std::cout << "TiledArray: block-sparse matrix multiply test..."
<< "\nGit HASH: " << TILEDARRAY_REVISION
<< "\nGit HASH: " << TiledArray::revision()
<< "\nNumber of nodes = " << world.size()
<< "\nMatrix size = " << matrix_size << "x"
<< matrix_size << "\nBlock size = " << block_size << "x"
Expand Down Expand Up @@ -243,8 +243,6 @@ int main(int argc, char** argv) {
print_results(world, app_gflops);
}

TiledArray::finalize();

} catch (TiledArray::Exception& e) {
std::cerr << "!! TiledArray exception: " << e.what() << "\n";
rc = 1;
Expand Down
6 changes: 2 additions & 4 deletions examples/dgemm/ta_sparse_grow.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ int main(int argc, char** argv) {

try {
// Initialize runtime
TiledArray::World& world = TiledArray::initialize(argc, argv);
TiledArray::World& world = TA_SCOPED_INITIALIZE(argc, argv);

// Get command line arguments
if (argc < 2) {
Expand Down Expand Up @@ -70,7 +70,7 @@ int main(int argc, char** argv) {

if (world.rank() == 0)
std::cout << "TiledArray: growing, block-sparse matrix multiply test..."
<< "\nGit HASH: " << TILEDARRAY_REVISION
<< "\nGit HASH: " << TiledArray::revision()
<< "\nNumber of nodes = " << world.size()
<< "\nBlock size = " << block_size << "x" << block_size
<< "\nMemory per matrix = "
Expand Down Expand Up @@ -199,8 +199,6 @@ int main(int argc, char** argv) {
}
}

TiledArray::finalize();

} catch (TiledArray::Exception& e) {
std::cerr << "!! TiledArray exception: " << e.what() << "\n";
rc = 1;
Expand Down
3 changes: 1 addition & 2 deletions examples/pmap_test/pmap.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ void print_local(TiledArray::World& world,
}

int main(int argc, char** argv) {
TiledArray::World& world = TiledArray::initialize(argc, argv);
TiledArray::World& world = TA_SCOPED_INITIALIZE(argc, argv);

std::size_t m = 20;
std::size_t n = 10;
Expand Down Expand Up @@ -101,7 +101,6 @@ int main(int argc, char** argv) {
}

print_local(world, hash_pmap);
TiledArray::finalize();

return 0;
}
6 changes: 2 additions & 4 deletions examples/vector_tests/ta_vector.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ int main(int argc, char** argv) {

try {
// Initialize runtime
TiledArray::World& world = TiledArray::initialize(argc, argv);
TiledArray::World& world = TA_SCOPED_INITIALIZE(argc, argv);

// Get command line arguments
if (argc < 3) {
Expand Down Expand Up @@ -64,7 +64,7 @@ int main(int argc, char** argv) {

if (world.rank() == 0)
std::cout << "TiledArray: vector ops test..."
<< "\nGit HASH: " << TILEDARRAY_REVISION
<< "\nGit HASH: " << TiledArray::revision()
<< "\nNumber of nodes = " << world.size()
<< "\nMatrix size = " << matrix_size << "x"
<< matrix_size << "\nBlock size = " << block_size
Expand All @@ -86,8 +86,6 @@ int main(int argc, char** argv) {

vector_test<double>(world, trange, repeat);

TiledArray::finalize();

} catch (TiledArray::Exception& e) {
std::cerr << "!! TiledArray exception: " << e.what() << "\n";
rc = 1;
Expand Down
4 changes: 1 addition & 3 deletions examples/vector_tests/vector.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@
#define EIGEN_NO_MALLOC

int main(int argc, char** argv) {
auto& world = TiledArray::initialize(argc, argv);
auto& world = TA_SCOPED_INITIALIZE(argc, argv);

const std::size_t repeat = 100;
// Allocate some memory for tests
Expand Down Expand Up @@ -522,7 +522,5 @@ int main(int argc, char** argv) {
free(b);
free(c);

TiledArray::finalize();

return 0;
}
Loading