1# 11/19/2020 2 3### Attending: 4 5* Cary Phillips 6* Christina Tempelaar-Lietz 7* Joseph Goldstone 8* Kimball Thurston 9* Larry Gritz 10* Nick Porcino 11* Owen Thompson 12* Peter Hillman 13 14### Discussion: 15 16* Imath PR #66: Use likely/unlikely to improve certain vector 17 ops. 18 19 * This applies the builtin_expect to if statements to assist with 20 optimization. This is the result of engineers at Intel going over 21 things with a fine-tooth comb. 22 23 * The general rule is that the directive is appropriate when you’re 24 detecting an error that is truly exceptional. 25 26 * Does MSVC have the same feature? Maybe, someone should check. But 27 at least now all we have to do is extend the macro. 28 29 * #66 also includes a change to a line to invoke std::abs(), 30 technically shouldn't go in the same PR, but fine as is. 31 32* Imath #65 Deprecate Math<T> in favor of std:: 33 34 * In the name of portability, std:: is better. 35 36 * Kimball: There are some cases where I didn’t want to call the std 37 version because it does extra error checking. But you can tell the 38 compiler to use the unsafe function 39 40 * Should we get rid of the Math<T> class entirely? This PR removes all uses of the class but leaves it in the code. 41 42 * Nick: Every line that goes is less debt. 43 44 * Kimball: IlmThread in OpenEXR has the deprecation stiff, for mutex and lock. 45 46 * Larry will port that over to this class. 47 48* #60 Make Matrix implementation more SIMD friendly 49 50 * Unrolled assignments are faster than memset/memcpy. 51 52 * These came about by an attempt to autofectorize the code. 53 54 * Also included: a fix to Matrix33::setScale(), which attempted to 55 mimic Matrix44::setScale() by not affecting the final row, which 56 for M44 is the translation. But that doesn't ake sense for a 3x3 57 matrix. Nick wrote the original code at ILM years ago, an 58 abandoned effort. All agree to regard the current behavior as a 59 bug and fix it to conform to the most logical behavior and affect 60 all rows. 61 62* Imath #59 Hide Vec and Matrix exceptions from Cuda 63 64 * This PR #ifdef's out the throw calls under CUDA. 65 66 * Would it be better to #ifdef out the entire function? 67 68 * Or alternatively, remove the HOST_DEVICE decorator, which will 69 prevent them from bei ng compiled under CUDA altogether. 70 71 * Nick: A little churn in CUDA code doesn’t set off alarm bells, 72 it’s expected to be a bit volitile, so this shouldn't cause a 73 problem. 74 75 * One gotcha: M44::inverse(bool singExc) if invoked explicitly via 76 inverse(false). But the argument-less version is available. 77 78# Imath PR #58 Make separate test calls for each test 79 80 * Not sure why the CLA test failed. Cary will fix it and merge. 81 82* openexr PR #865: Add a conditional to prevent analysis on forks 83 84 * Larry: GitHub says they’re disabling actions on all forks, which 85 should address this. 86 87 * Kimball: this was the suggested fix, although it wasn't the most 88 thorough of investigations. 89 90* openexr PR #862 E2K: added initial support of MCST Elbrus 2000 CPU architecture 91 92 * Elbrus 2000 is a Russian supercomputer. It has all the same 93 registers, but not the same assembly syntax. 94 95 * Nick: I was hoping that the directives could be specified at cmake 96 time. The code in question is a part of highly nested bits at 97 compile-time. Can those pathways be selected at cmake time? I 98 couldn’t tell. 99 100 * It’s only used in the test of the DWA compressor. 101 102 * It's minimal extra debt, so fine to accept, subject to the CLA. 103 104* Larry: We haven’t yet marked things as noexcept. 105 106 * Ideally, we do it across the board everywhere that's 107 applicable. Comprehensive. 108 109 * Certainly, in the cases of dual functions, it helps with 110 documentation. 111 112 * The compiler ought to be able to tell you if a function throws, 113 but it doesn't. 114 115 * In C++21(?) noexcept becomes a part of the name of the function, 116 so it would be an ABI break. 117 118 * Larry will pick something and do it, then that can be used as an 119 example. 120 121* Larry: OIIO builds and supports OpenEXR back to version 2.x. 122 123 * Every downstream project is going to need to change. At source and build. 124 125 * Nick: USD ws doing detection on OpenEXR version, to fix dependency 126 on OIIO. 127 128 * Larry will write up a short guide for how downstream projects will 129 need to adjust to 3.0 130