text:
Summit Overview
2019 Tribal and First Nations Climate Summit
2016 Tribal Leaders Summit on Climate Change
Ann Marie Chischilly, Executive Director, Institute for Tribal Environmental Professionals (ITEP). Ms. Chischilly is the Executive Director at the Institute for Tribal Environmental Professionals. She is responsible for managing ITEP's work with Northern Arizona University, state and federal agencies, tribes and Alaska Native villages. In 2017, ITEP celebrated 25 years serving over 95% of all the 573 Tribes and Alaskan Native Villages nationwide. Ms. Chischilly currently serves on several federal advisory committees including the Environmental Protection Agency's (EPA) National Advisory Committee, the Advisory Committee for the Sustained National Climate Assessment (Now the Independent Advisory Committee on the Sustained National Climate Assessment) and EPA's National Safe Drinking Water Council. From 2013 to 2015, Ms. Chischilly also served on Department of Interior's Advisory on Climate Change and Natural Resource Science. Ms. Chischilly speaks both nationally and internationally on topics of Indian Law, Environmental Law, Tradition Knowledges, Water Law and Tribes/Indigenous Peoples. She works with the United Nations on issues of the Protection of Traditional Knowledge and co-wrote, "Guidelines for the Use of Traditional Knowledge in Climate Change Initiatives". Before coming to ITEP, she served for over ten years as Senior Assistant General Counsel to the Gila River Indian Community (Community), where she assisted the Community in implementing the historic "Arizona Water Settlement Act" and founded the Community's Renewable Energy Team. Ms. Chischilly is an enrolled member of the Navajo Nation (Diné). She earned her Juris Doctorate degree from St. Mary's University School of Law and a Masters in Environmental Law (LL.M) from Vermont Law School. She is licensed in Arizona and has practiced in state, district, and federal courts. She is also a member of the International Bar Association. Ann Marie can be reached by e-mail at Ann-Marie.Chischilly@nau.edu.
Brian Cladoosby, Chairman of the Swinomish Indian Tribal Community. He has served on the Swinomish Indian Senate, the governing body of the Swinomish Indian Tribal Community, since 1985. He has served as the Chairman of the Swinomish Indian Senate since 1997. Chairman Cladoosby has served many in either an elected or appointed role at all levels of government and organization at the international, national, regional and local level. He has always strived to give to Native Americans and find pathways for all to live together. His compassion and integrity is what lead to his election to serve for two terms as the 21st and 22nd President of the National Congress of American Indians. Chairman Cladoosby is one of our most senior tribal political leaders in Washington State and the Pacific Northwest and his experience is reflected in his numerous commitments. He is the President of the Association of Washington Tribes, Executive Board member of the Washington Gaming Association, past President of the Affiliated Tribes of Northwest Indians, and is continually active in tribal and state politics. On an international basis he is the Co-Speaker of the Coast Salish Gathering, which comprises 66 British Columbia First Nations and Western Washington Tribes. He is proud to work with health care leaders to achieve health equity would mean that all Washingtonians have fair and equal opportunities to lead healthy, productive lives regardless of race, ethnicity, income, or where we live. With love for the Skagit, the Tribe made a vital investment to the Skagit is the investment in the healing of the opioid crisis for the entire valley. In 2017, the Swinomish Tribe opened up the didgwalic Wellness Center, knowing that our communities are connected, the opioid epidemic does not stop at a county line, or the city limits, or the Reservation Boundary. After much consideration, Swinomish has decided to fully fund an expansion of our Wellness Services. Brian and his wife, Nina, have two daughters LaVonne and Mary, son-in-law Tylor, granddaughter Isabella and grandson, Nathanael.
Leonard Forsman, Tribal Chairman of the Suquamish Tribe; President of the Affiliated Tribes of Northwest Indians. Mr. Forsman's interests include cultural preservation, sustainable economic development and habitat protection. Leonard is a graduate of the University of Washington (B.A. Anthropology) and Goucher College (M.A. Historic Preservation). He grew up in Suquamish on the Port Madison Indian Reservation and continues to live there with his wife Jana Rice. Leonard serves on the boards of the Kitsap Regional Coordinating Council, the Washington State Historical Society, the Seattle Waterfront Steering Committee, Suquamish Tribal Cultural Cooperative, the Suquamish Museum, the Suquamish Foundation, the Washington Indian Gaming Association, the West Central Local Integrating Organization, and the Tribal Leaders Congress on Education. President Barack Obama appointed Chairman Forsman to the Advisory Council on Historic Preservation in 2013 and 2016 where he currently serves as Vice-Chairman.
Paulette Jordan, Coeur d'Alene Tribe. Paulette Jordan is a enrolled citizen of the Coeur d'Alene Tribe and also has Sinkiuse (known as the Moses–Columbia Band of the Colville Confederacy), Nez Perce, and Yakama–Palus ancestry. She served in the Idaho House of Representatives as a member of the Idaho Democratic Party from December 1, 2014 until February 14, 2018. She previously served on the Coeur d'Alene Tribal Council. During her final term she was the only Democrat serving in the Idaho Legislature from North Idaho. She was the Democratic nominee for Governor of Idaho in the 2018 election. Jordan was born into a ranching and farming family in northern Idaho, where she still holds timber and farmland. Jordan attended Gonzaga Preparatory School and the University of Washington. While in Seattle, she held a variety of leadership roles in community activism and became involved in local city politics, also serving as an Advisor to the President of the University. After returning to the reservation, Jordan ran for and was elected to the Tribal Council. From this position, she became the co-chair of gaming for the Affiliated Tribes of Northwest Indians (ATNI). Jordan's engagement as a Native leader extends beyond the region to include national organizations. She is a Senior Executive Board representative, Finance Chair and Energy Initiative Chair for the National Indian Gaming Association, serving her third consecutive term. Jordan spent her childhood learning lessons about farm life and about political leadership from her family and her communities. This experience laid the foundation of her commitment to be a servant-leader.
Clarita Lefthand-Begay, Assistant Professor and Director of the Tribal Water Security Project, The Information School, University of Washington. Clarita Lefthand-Begay is citizen of the Navajo Nation and an Assistant Professor at the University of Washington's Information School. Her interdisciplinary research focuses on protection of indigenous knowledge in the United States, tribal water security, and climate health and resiliency. Indigenous knowledge systems are foundational to each of her projects. She is currently the Director of the Tribal Water Security Project, which examines the water insecurity challenges faced by tribes in the United States and around the globe. As a researcher and tribal community member, Clarita supports efforts to strengthen tribal wellbeing while respecting and honoring self-determination and cultural revitalization.
Andrea Rodgers, Senior Staff Attorney, Our Children's Trust. Andrea is Senior Attorney at Our Children's Trust, where she serves as co-counsel on the constitutional youth climate lawsuit against the federal government, Juliana v. United States, and as lead counsel on the constitutional youth climate lawsuits against the state of Washington, Aji v. State of Washington, and the state of Florida, Reynolds v. State of Florida. Andrea is licensed to practice law in Washington and Oregon and is admitted to practice in the U.S. Supreme Court, the U.S. Court of Appeals for the Ninth Circuit and Tenth Circuit, U.S. District Courts for the Eastern and Western Districts of Washington, Oregon, Montana, and Northern California, the Snoqualmie Tribal Court, the Lummi Indian Nation Tribal Court and the Muckleshoot Tribal Court.
Kailani Sirois. Kailani is Okanagan/Wenatchi citizen of the Confederated Tribes of the Colville Reservation on her Father's side and a descendent from the Poundmaker Cree on her Mother's side. Kailani is moving into the 9th grade at North Central high school next year in Spokane, WA. Kailani is a plantiff of the Aji P. v. State of Washington court case where Washington youth are challenging the state on its affirmative actions causing climate change impacting their culture, life and future. Kailani carries a deep love for her traditions in salmon, roots and berries. She also finds great interest in the fields of science, writing and reading. Kailani feels strongly that it is time for all people to come together to make this world a better place for her generation and generations to come.
Direlle R. Calica, Director of Institute for Inter Tribal Governments at Portland State University. Direlle R. Calica, J.D. is a citizen of the Confederated Tribes of Warm Springs; she is of Warm Springs, Wasco, Yakama, Molalla, and Snoqualamie tribal descent. She is the owner and Managing Partner of Kanim Associates, LLC, which is a Native American, Women, and Veteran owned company located in Oregon and with an office in Colorado. Kanim Associates, LLC provides environmental, energy, entrepreneur, and art/culture expertise services to tribal, government, professional, and organizational clients. Ms. Calica has more than 20 years of experience as a legislative, policy, planning, and regulatory advisor and she is a member of the Washington State Bar Association. She has worked in the field of Tribal Relations for the U.S. Attorney's Office (District of Oregon) and the U.S. Army Corps of Engineers, and has been an advisor to various Indian Tribes on external relations. Ms. Calica also has extensive professional experience in intergovernmental affairs, hydro-system planning related to tribes, water management, environmental entrepreneurship, and tribal energy policy. She has also served as a White House Intern and as a Mark O. Hatfield Congressional Fellow in the U.S. Senate. Ms. Calica has also served as an Adjunct Professor in the Indian Law Program at the Northwestern School of Law at Lewis and Clark College, where she received her Juris Doctorate with a focus on Federal Indian Law, Business and Natural Resource law. In addition to serving as an ONAC Board Member, she serves as a member of the Board of Directors for the Northwest Energy Coalition, Council Member on the Oregon Energy Facility Siting Council, and she is a Bonneville Environmental Foundation Director Emeritus. Ms. Calica is also faculty and Director of the Institute for Tribal Government at the Center for Public Service, Hatfield School of Government at Portland State University.
Larry Campbell, Swinomish Indian Tribal Community. Swinomish Elder and staff member, Larry Campbell, has worked for his Tribe for almost 40 years. He has an extensive background in cultural resources, tribal policy, government-to-government relations, and community health. Larry has a bachelor of arts degree in tribal government. He co-manages the Swinomish Community Environmental Health Program with Dr. Jamie Donatuto.
Nikki Cooley, Co-Manager Tribal Climate Change Program, Institute for Tribal Environmental Professionals (ITEP). Nikki is the co-manager for ITEP's Tribes & Climate Change Program and is based near the Peaks in Flagstaff, AZ. She is of the Diné Nation by way of Shonto and Blue Gap, AZ, and is of the Towering House Clan, born for the Reed People Clan, maternal grandfathers are of the Water that Flows Together Clan, and paternal grandfathers are of the Manygoats Clan. Her undergraduate and Masters studies includes extensive work with the Cherokee Tribe of North Carolina, and has worked with various tribes including the Kaibab Paiute tribe. Nikki's current work takes her all over the United States working with regional, national, tribal and federal partners to address the urgency of climate change impacts on tribal/Indigenous culture and resources.
Jamie Donatuto, Swinomish Indian Tribal Community. Jamie has worked for Swinomish for 20 years, and much of that time has been in collaboration with Larry— developing and implementing community-based indigenous health indicators. Jamie is a researcher and practitioner, with a current focus on evaluating tribal health-related impacts from climate change, developing community-driven adaptive management projects, and managing a Coast Salish foods and resources community education program. Jamie completed her doctoral studies at the University of British Columbia, Vancouver, Canada, in the interdisciplinary graduate program of Resource Management and Environmental Studies.
Mike Durglo, Confederated Salish and Kootenai Tribes. Mike received his BS in Environmental Science from Salish Kootenai College in 2002. He is currently the Department Head for the Confederated Salish and Kootenai Tribes Historic Preservation Department. He has worked for the Tribes for over 35 years in different capacities including Wildlife Conservation Officer, Tribal Council, Wetland Conservation Coordinator, Regulatory Specialist and Environmental Protection Division Manager. Mike Durglo has been a leader in climate change work for nearly a decade. He facilitated the development of a Flathead Reservation Climate Change Strategic Plan for the Confederated Salish Kootenai Tribes. He has shared his experience and knowledge of climate adaptation planning at workshops and seminars throughout the US and Canada. After completing the plan, he continued to build on the work by diving deep into the perspectives of the elders and integrating traditional knowledge into the plan. In 2016, Mike received the White House Champion of Change award and in 2017, Mike received the Climate Leadership Award for Natural Resources.
Frank Ettawageshik, Executive Director, United Tribes of Michigan. Frank lives in Harbor Springs, Michigan, with his wife Rochelle. He served in tribal elected office for sixteen years, fourteen as the Tribal Chairman of the Little Traverse Bay Bands of Odawa Indians in Harbor Springs, Michigan. During his tenure as Tribal Chairman he was instrumental in the adoption of the Tribal and First Nations Great Lakes Water Accord in 2004 and the United League of Indigenous Nations Treaty in 2007. Recently he was appointed Tribal Court Appellate Justice for his tribe. Since 2009 Frank has been serving as the Executive Director of the United Tribes of Michigan. He also serves on the Michigan Water Use Advisory Council, and on the Great Lakes Water Quality Board of the International Joint Commission. Internationally, he has represented the National Congress of American Indians at several meetings of the United Nations Framework Convention on Climate Change, in Paris, France, in Bonn, Germany, and in Katowice, Poland. He has also participated in meetings of the World Intellectual Property Organization (WIPO) in Geneva, Switzerland.
Kim Gottschalk, Native American Rights Fund (NARF). Kim is a staff attorney that has worked primarily on recognition, land claims cases, and international Indigenous rights. Since 2010 he has been involved in negotiations under the United Nations Framework Convention on Climate Change, working with Indigenous Peoples from around the world in the International Indigenous Peoples' Forum on Climate Change. He received his J.D. from Northwestern University. He is admitted to practice law before the United States Supreme Court, U.S. Court of Federal Claims, and the U.S. Courts of Appeals for the Eighth, Ninth, Tenth, and District of Columbia Circuits. He is also admitted to practice law in New Mexico.
Angie Hacker, Prosper Sustainably. Angie Hacker is Vice President of Prosper Sustainably, a consulting agency that specializes in helping communities thrive by building strategic solutions to challenges like climate change. She has nearly 20 years of experience fostering more resource-efficient, healthy, accountable, and prosperous communities spanning many regions and sectors, including as Sustainability Division Chief for the County of Santa Barbara. Angie is currently developing several regional and national tribal climate change and health adaptation programs and tools funded by the US Environmental Protection Agency (EPA), US Bureau of Indian Affairs (BIA) and National Indian Health Board (NIHB). She has presented on this topic at forums including the Tribal EPA Region 9 Annual Conference, the National Adaptation Forum, the NIHB Tribal Public Health Summit, and Pala's Tribal Climate and Health Adaptation trainings. Angie earned a Bachelor of Science from Cal Poly San Luis Obispo and a Master of Public Administration from the Wagner Graduate School of Public Service at New York University.
Preston Hardison, Watershed Policy Analyst, Tulalip Tribes. Preston provides policy advice on bringing traditional knowledge into natural resource management, climate change adaptation, and treaty rights to biodiversity. Since 1996, he has helped negotiate decisions in the Convention on Biological Diversity (CBD) relating to indigenous rights to traditional knowledge and biological diversity and their role in conservation, and was a lead negotiator of the Nagoya Protocol on Access and Benefit Sharing, concluded in 2010. He is currently negotiating potential instruments on indigenous intellectual property rights to traditional knowledge, traditional cultural resources and genetic resources at the World Intellectual Property Organization (WIPO), in which he has participated since 2001.
Keith Hatch, Fisheries Biologist, U.S. Bureau of Indian Affairs, NW Regional Office. Mr. Hatch has an MS in Fisheries from Oregon State University, and is a Siletz tribal elder. He has also worked for Columbia River Inter-Tribal Fish Commission, the USFWS, and the Summit Lake Paiute Tribe. As a cold water fish biologist, his interest in climate change stems from a desire to keep cold water cold. Mr. Hatch was a contributor to the National Fish Wildlife and Plants Climate Adaptation Strategy.
Timothy Horan, Children of the Sun Solar Initiative (COSSI). Tim is the Executive Director of the Spokane Indian Housing Authority (SIHA), for which he has overseen a number of large housing developments. SIHA is the Tribally Designated Housing Entity of the Spokane Indian Tribe. SIHA was established in 1971 to meet the housing needs of the Tribe through providing safe, decent and affordable housing to its members. SIHA is currently installing the COSSI project, which will save the Tribe $2.8 million over its 35-year lifespan and supports energy sovereignty, with 650 kW of PV solar on 23 residences and 9 tribal buildings. Phase II will provide solar for the balance of the managed units and work towards creating a microgrid system. Tim has been the Executive Director of the Round Valley Indian Housing Authority, the Mescalero Apache Housing Authority, the Chukchansi Indian Housing Authority, the Navajo Partnership for Housing and now with SIHA.
Shilpa Joshi, Coalition Director, Renew Oregon. Shilpa has been organizing a broad swath of progressive organizations across Oregon to help shape the Clean Energy Jobs policy. Before joining Renew, Shilpa led and won a campaign to ban fracking in Maryland with the Chesapeake Climate Action Network. She also served as the co-chair for Power Shift 2013, a youth environmental justice conference which drew thousands of young people to Pittsburgh. She has helped organize state and national coalition spaces for environmental issues for over 5 years. She earned her Bachelors in International Environmental Policy from American University.
Frank Kanawha Lake, Research Ecologist, USDA Forest Service, Pacific Southwest Research Station, Fire and Fuels Program. Lake received a Bachelor of Science degree from University of California-Davis (1995) in Integrated Ecology and Culture with a minor in Native American Studies and his Ph.D. from Oregon State University, Environmental Sciences Program (2007). His research includes the incorporation of Indigenous knowledge into landscape restoration strategies, wildland fire and forest management, and the effects of climate change in the Pacific Northwest and northern California, with an emphasis on the Klamath-Siskiyou bioregion. He is working with tribes on how indigenous knowledge can be incorporated in to scientific climate change research to support tribal vulnerability, adaptation and mitigation planning and related strategies. For the Pacific Southwest Research Station, Frank is the Tribal-Climate Change contact, and lead coordinating scientist for the Redwood Experimental Forest and Western Klamath Restoration Partnership landscape collaborative. Frank is of mixed American Indian, Mexican and European ancestry.
Nuno Louzeiro, Innergex. Mr. Louzeiro has over 20 years of engineering experience. He has been with Innergex Renewable Energy Inc. since 2008, with a focus on developing renewable energy projects. During that time, Nuno has had a lead role in the development of numerous hydro, wind and solar projects, primarily in British Columbia, Saskatchewan and Ontario. He has been instrumental in building collaborations with Indigenous communities on several of these projects, including seeing first-hand how the sharing of benefits from renewable energy projects may empower Indigenous communities on a path to self-autonomy.
Alexis Malcomb, Upper Snake River Tribes Foundation. Alexis Malcomb began working for USRT in April 2016 as the Executive Assistant for the Executive Director, Scott Hauser. She has been working closely with USRT project leads on their many projects relating to climate change. She spent the majority of her early career working for the U.S. Forest Service on native plant research in the Great Basin while obtaining multiple degrees in Applied and Social Sciences from Boise State University to focus on creating a bridge between research, policy, and community. Previous to USRT, she has managed and/or assisted on a myriad of lab and field research projects relating to fire restoration, native plant revegetation, plant selection, agricultural seed production, seed increase, and projected species range shifts due to climate change.
Amelia Marchand, Program Director for the Environmental Trust Department of the Colville Confederated Tribes. An enrolled citizen of the Colville Confederated Tribes, her heritage is Okanogan, Moses-Columbia, Arrow Lakes, Palus and Chief Joseph Band of the Nez Perce. She oversees and coordinates planning of the Department's six management areas to support, protect and enhance healthy, clean and resilient ecological systems which are required to support the Spirit Relatives, traditional laws, subsistence uses, and regulatory codes of the Colville Tribes. She volunteers as a board member for the Center for World Indigenous Studies, Conservation Northwest, and the Nez Perce Wallowa Homeland Project. Amelia has a BA in anthropology from Eastern Washington University and an MA in environmental law and policy from Vermont Law School.
Lauren McCloy, Senior Policy Advisor, Office of Governor Inslee. Lauren McCloy is a Senior Policy Advisor to Governor Jay Inslee, Washington State, where she leads and manages a broad range of issues in support of the Governor's energy agenda. Prior to her current role, Lauren served as the Legislative Director for the Washington Utilities and Transportation Commission (UTC), where she was the commission's liaison to the state Legislature and the Governor's office; developed and coordinated the UTC's legislative activities. Lauren was previously a policy advisor at the UTC, advised the commissioners on energy policy and legislative issues starting in 2014. Before joining the UTC's policy staff, Lauren worked as a Compliance Investigator in the UTC's Consumer Protection Division. She has prior experience working for the Washington state Senate Ways and Means Committee and several non-profit organizations focused on renewable energy, energy efficiency, and consumer advocacy.
Patrick Michell, Chief of Nlaka'pamux Nation (Kanaka Bar Indian Band). Patrick is a member of the Nlaka'pamux Nation (Kanaka Bar Indian Band) and has lived in British Columbia's Fraser Canyon all his life. In 1983, while attending UBC, he learned that "he was an impoverished Indian" according to an article he read. Rather than becoming upset at how people viewed indigenous people, Patrick focused his efforts to find opportunities to make changes in his community. In 1988, when BC Hydro opened up its grid to IPP's, Kanaka applied for a water license on Kwoiek Creek to develop a renewable energy project. Patrick continued to advance the project in subsequent years while building the knowledge and experience he wanted to gain to bring back to his community. Patrick has an Administrative Management diploma from Douglas College (New Westminster) and a Bachelor of Law from UBC (1992). Upon graduation he worked for both the Department of Fisheries and Oceans and Indigenous and Northern Affairs Canada. He subsequently articled with the Ministry of Attorney General in Victoria and Richards Buell Sutton in Vancouver before being called to the Bar in February of 1997. He would take those lessons learned and experiences back to his community to help them advance the hydro project that he was sure would lead an economic and social awakening throughout Kanaka. In 2015, Patrick was elected the Chief of Kanaka Bar in the community's first election in over 30 years. Since that time he has spearheaded the development of four solar projects into operation, is supervising construction of a wind tower project, is in the process of advancing a 500Kw run of river hydro project into final design, built a new subdivision and acquired several fee simple lands which are been cleared for future housing, agriculture and renewable energy projects. In 1973, Patrick saw the answer to his communities' problems in renewable energy development and in 1988 acted on it. Since that time, his community is fully self-determining its course again and the social ills that gripped his generation are a thing of the past. In 2018, Chief Patrick Michell received the Lifetime Achievement Award from Clean Energy British Columbia in recognition of his exceptional contributions to furthering renewable energy development in the Province.
Will "Yaan Yaan Eesh" Micklin, 3rd Vice President, Tlingit and Haida Indian Tribes of Alaska. Will Micklin is Tlingit, Wolf tribe, Teikweidi Clan (Brown Bear), Kaats Hit (House of man who married the bear), Tantakwaan, child of Dleit Kaa and grandchild of Ganaxadi clan. Will serves the Executive Council of the Central Council of Tlingit and Haida Indian Tribes of Alaska as 3rd Vice President, has served on the Executive Council since 2008, and has served Tlingit and Haida as Assembly member since 1994. Will is employed by the Ewiiaapaayp Band of Kumeyaay Indians as its chief executive officer, which is a federally recognized Indian Tribe in east San Diego County, a position he has held since 1995. Will serves on federal tribal advisory committees, including the FCC National Native Communications Task Force, the DOE Indian Country Energy and Infrastructure Work Group, the EPA National Advisory Council for Policy and Technology, the DOI Tribal Self-Governance Advisory Committee, and formerly the HHS Secretary's Tribal Advisory Committee, the DOI FWS Tribal Advisory Committee and the IRS Advisory Committee. Will volunteered as executive director of the California Association of Tribal Governments, the tribally chartered, non-profit, inter-tribal association of California tribes established in 2008 through 2018. Will is a member of the Alaska Native Brotherhood Camp 14 in Ketchikan, Alaska, and a lifetime member of the National Congress of American Indians.
Steve Pozzanghera, Eastern Region (Region 1) Regional Director for the Washington Department of Fish and Wildlife . Prior to taking the Regional Director position in Spokane, Steve served as the Department's first Carnivore Section Manager working in the Wildlife Program in Olympia. He then became the Deputy Assistant Director of the Wildlife Program before making the move to Region 1. Steve has a Bachelor's degree in Wildlife Management from West Virginia University and a Master's degree in Wildlife Science from the University of Tennessee. Steve enjoys hunting, fishing and preparing food to serve others – especially on a barbecue.
Don Sampson, Chief Of the Walla Walla Tribe and Climate Change Program Director for Affiliated Tribes of Northwest Indians. Mr. Sampson is the Climate Change Project Director for the Affiliated Tribes of Northwest Indians, a consortium of 57-tribes in the Pacific Northwest. In 2015 he was one of 15 Indigenous representatives from North America at the Paris Climate Accords (COP21). Don was also the former Executive Director of the Institute of Tribal Government (2012-2017) part of the Center for Public Service at Portland State University. Mr. Sampson was the former Executive Director (2003-2010) and Chairman (1994-1997) of the Confederated Tribes of the Umatilla Indian Reservation in Oregon; overseeing all tribal government and business operations with over 1500 employees. He was the Executive Director of the Columbia River Inter-Tribal Fish Commission from 1997-2003. He is an enrolled citizen of the Umatilla Tribe.
Kenneth Weitzel, Central Council of the Tlingit and Haida Indian Tribes, Alaska. Kenneth is Tlingit and from Hoonah Alaska. His Tlingit name is Daakoostii and he is of the Teikweidi (Brown Bear) Xoots Hit (Bear House). After graduating from high school he served in the United States Navy for 11 years combat deploying overseas onboard two aircraft carriers. Now back in his ancestral homeland (Aani) he is employed by the Tlingit & Haida tribe as a Natural Resource Specialist working on Climate Change Adaptation, Transboundary Watersheds & Mining, GIS, and Forestry Land Management. Kenneth is the single father of a beautiful 8 year old daughter named Kiley.
Terry Williams, Commissioner of Fisheries and Natural Resources, The Tulalip Tribes. Terry Williams has served as a Fisheries and Natural Resources Commissioner for the Tulalip Tribes since 1982. In this role, he directs pre-season fisheries negotiations, governmental planning and cooperative habitat management. Since 1985, Williams has served on the Northwest Indian Fisheries Commission. He has also represented the Tulalip Tribes on the Pacific Fisheries Management Council since 1985 and served on the Pacific Salmon Commission since 1997. Appointed by Environmental Protection Agency (EPA) administrator Carol Browner, Williams served as the director of the EPA American Indian Environmental Office in Washington, D.C. from 1995 to 1996. This office addressed specific environmental issues of Indian tribes nationwide. From 2003 to 2004, Williams served as Chair of the Tribal Committee of the National Environmental Justice Advisory Committee. Williams has also worked on tribal issues at the international level. In 1997, the Secretary for Policy and International Affairs Office of the Department of the Interior appointed Williams to represent indigenous peoples on the U.S. delegation to the United Nations Conference on Biodiversity.
Kyle Whyte, Professor and Timnick Chair in the Humanities, Departments of Philosophy and Community Sustainability, Michigan State University. Kyle's research addresses moral and political issues concerning climate policy and Indigenous peoples, the ethics of cooperative relationships between Indigenous peoples and science organizations, and problems of Indigenous justice in public and academic discussions of food sovereignty, environmental justice, and the anthropocene. He is an enrolled member of the Citizen Potawatomi Nation. Kyle is involved in a number of projects and organizations that advance Indigenous research methodologies, including the Climate and Traditional Knowledges Workgroup, Sustainable Development Institute of the College of Menominee Nation, Tribal Climate Camp, and Ngā Pae o te Māramatanga New Zealand's Māori Centre of Research Excellence. He has served as an author on the U.S. National Climate Assessment and is a former member of the U.S. Federal Advisory Committee on Climate Change and Natural Resource Science and the Michigan Environmental Justice Work Group. He is a recipient of the Bunyan Bryant Award for Academic Excellence from Detroiters Working for Environmental Justice. Kyle is also serving as a moderator for this Summit.
Daniel Wildcat Dr. Wildcat is a professor at Haskell Indian Nations University in Lawrence, Kansas, and an accomplished scholar who writes on Indigenous knowledge, technology, environment, and education. He is also director of the Haskell Environmental Research Studies Center, which he founded with colleagues from the Center for Hazardous Substance Research at Kansas State University. Wildcat helped design a four-part video series entitled All Things Are Connected: The Circle of Life (1997), which dealt with the land, air, water, biological, and policy issues facing Native nations. A Yuchi member of the Muscogee Nation of Oklahoma, Wildcat recently formed the American Indian and Alaska Native Climate Change Working Group, a tribal-college-centered network of individuals and organizations working on climate change issues. In 2008, he helped organize the Planning for Seven Generations climate change conference sponsored by the National Center for Atmospheric Research. He is the author, most recently, of Red Alert! Saving the Planet with Indigenous Knowledge (2009).
Organizers and Moderators
Laura Gephart, Columbia River Inter-Tribal Fish Commission (CRITFC). Laura is the Watershed Programs Coordinator for CRITFC and provides management of watershed restoration programs for the CRITFC tribes such as the Pacific Coastal Salmon Recovery Fund (PCSRF), which has over 50 ongoing tribal salmon recovery projects in the Columbia River Basin and 320 completed projects. Ms. Gephart has an extensive history working with the tribes on regional salmon and climate change related issues and has a BA in Environmental and Cultural Geography and a A.A.S. in Business Management.
Eliza Ghitis, Climate Change Scientist, Northwest Indian Fisheries Commission. Eliza Ghitis has served as the Climate Change Scientist for the Northwest Indian Fisheries Commission (NWIFC) since 2013. Her role is to support the twenty member tribes of the NWIFC in evaluating and responding to the impacts of climate change. Her work focuses on enhancing the resilience of environments that sustain treaty-protected natural resources, such as fish, shellfish, wildlife, and terrestrial plants. Eliza has a background in geomorphology, specializing in the interactions between physical and biological processes. Her previous work centered on geomorphic assessment and the design of process-based environmental restoration projects in freshwater, estuarine, and coastal settings.
Peggy Harris, Master of All Things.
Chas Jones, Tribal Liaison, Afflilated Tribes of Northwest Indians / NW Climate Adaptation Science Center. Dr. Jones serves as the Tribal Liaison for the Affiliated Tribes of Northwest Indians (ATNI) at the Northwest Climate Adaptation Science Center. He acquired his Ph.D. in Hydrology from the University of Alaska, where he incorporated traditional knowledge and science to assess exposure of indigenous people to the impacts of climate change. Asan expert in the dynamic interactions between climate, water, ecology, and society, Chas enjoys using his knowledge and skills to benefit tribes in the Northwestern U.S. as ATNI's Tribal Liaison.
Kathy Lynn, Tribal Climate Change Project Coordinator, Environmental Studies Program, University of Oregon. Kathy is a faculty researcher in the University of Oregon's Environmental Studies Program, where she coordinates the Tribal Climate Change Project, a collaborative project at the University of Oregon with support from the USDA Forest Service Pacific Northwest Research Station, the Affiliated Tribes of Northwest Indians, the Bureau of Indian Affairs and the North Pacific Landscape Conservation Cooperative. Kathy has a Masters degree in Community and Regional Planning from the University of Oregon and served as a Peace Corps Volunteer in Haiti from 1996 to 1999.
John Mankowski. John Mankowski has been conserving natural and cultural resources in the Pacific Northwest and beyond for the past 32 years. For the past 7 years he coordinated the North Pacific Landscape Conservation Cooperative — a trans-boundary partnership working across the coastal temperate rainforest region (Alaska to California) focused on understanding and responding to landscape scale stressors in the region, with a strong emphasis on advancing tribal interests on climate adaptation and traditional knowledge. John currently works as a private consultant advancing collaborative conservation with regional and national conservation organizations, tribes, and agencies. As a consultant he provides facilitation, environmental policy and strategic planning, intergovernmental relations, and communication services.
Joel Moffett, Affiliated Tribes of Northwest Indians. Joel Moffett is the ATNI Natural Resources Policy Coordinator and Co-Organizer of the 2017, 2018, and 2019 Changing Currents Tribal Water Summits hosted in Oregon, Washington, and Idaho.
Don Sampson, Chief Of the Walla Walla Tribe and Climate Change Program Director for Affiliated Tribes of Northwest Indians. See above for biographical information.
John " say'ay' " Eli Sirois, Committee Coordinator, Upper Columbia United Tribes. John is Okanagan and Wenatchi of the Colville Confederated Tribes. say'ay' studied History at Dartmouth College, Public Administration from the University of Washington and traditional ways from his elders. Mr. Sirois spent 20 years at the Colville Tribes' in cultural revitalization, renewable energy, policy and governance as former Council Chairman and Member. John facilitates issues through a committee process to achieve the UCUT Mission. Mr. Sirois was the former Chair of the Indian Land Tenure Foundation and worked toward cultural connections, stewardship and use of traditional lands. Mr. Sirois currently focusses his work on reintroduction of salmon and addressing climate change impacts. John approaches his work through the lens of cultural upbringing and applied science. John seeks to build a better future for all for generations to come. You can find say'ay' camping, hunting, hiking and salmon fishing with his family.
Summit Sponsors and Partners


text:
<?php
error_reporting(E_STRICT);
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);

chdir(dirname(__DIR__).'/../../');

include __DIR__ . '/../../../init_autoloader.php';

include __DIR__ .'/SelfService/Helpers.php';

redpajama_set_name: RedPajamaGithub


text:
Cheiloneuromyia javensis is een vliesvleugelig insect uit de familie Encyrtidae. De wetenschappelijke naam is voor het eerst geldig gepubliceerd in 1916 door Girault.

Encyrtidae

redpajama_set_name: RedPajamaWikipedia


text:
Awards Move 55+ Marketing into Overdrive
Posted on July 17, 2017 by Jorie Helms
Meadow Ranch is an award-winning development from ActiveWest Builders.
You know you're a really good builder. Your clients know you're a really good builder. But wouldn't it be better if your entire market knew?
You can do that by applying for the NAHB Best of 55+ Housing Awards.
That's what ActiveWest Builders in Coeur d'Alene, Idaho does. A few years back, marketing director Sharon Cunningham and her husband, company president Dennis Cunningham, began entering their best work into regional and national awards competitions.
Every time they won an award — Gold Nuggets at PCBC, Gold and Silver winners from NAHB's Best of 55+ Housing Awards, an Idaho Grow Smart award — Sharon would write a press release that went to local media and past clients. Then she posted it to the company's social media pages and to the EnergyStar and U.S. Green Building Council LEED for Homes websites, because the winners were certified to those programs.
"Anyone can say they're doing a good job," she said, "but if an independent third party says so, that lets people know that others see the quality of your work as well."
They also publicize their awards on a large poster at their booth at the twice-a-year local home shows. They include mention of their awards in their newspaper ads, and the actual awards are displayed in the award-winning communities' model homes.
It's a lot of work, but it's worth it — it turns the awards into an auxiliary sales force. The result is clear when Sharon answers the phone and hears the caller ask, "Are you that award-winning builder?"
When Dennis became chairman of the 55+ Housing Industry Council this year, Sharon announced it to her press release list, even though it wasn't an award. But Dennis started hearing comments from clients, who said, "I see you won another award!"
Building award-winning projects is a great accomplishment, but using them to build a reputation is priceless.
The Best of 55+ Housing Awards is open until Aug. 15. Apply today. For information, contact Lynn Basso at 800-368-5242 x8130.

redpajama_set_name: RedPajamaCommonCrawl


text:
\section{Introduction\label{s:intro}}

\input{intro.tex}

\section{Related Work\label{s:relatedWork}}

\input{relatedWork.tex}

\section{Methods and APIs\label{s:methods}}

\input{methods.tex}

\section{Porting Alpaka\label{s:porting}}

\input{porting.tex}

\section{Major Hurdles and Discussion\label{s:issues}}
\subsection{Standards Issues}

\input{standardsIssues.tex}

\subsection{Compiler and Runtime Issues}

\input{compilerIssues.tex}

\subsection{Preliminary Results\label{s:firstResults}}

\input{firstResults.tex}

\section{Conclusions and Outlook\label{s:concl}}

\input{conclusions.tex}

\subsubsection{Acknowledgments}
\input{ack.tex}

\bibliographystyle{splncs04}

\subsubsection{Compiler Error Messages}

Another problem encountered when debugging issues in C++ codes in general,
specifically when using vendor compilers backed by smaller development teams, is
unspecific error reporting.  The minor part of this can be unspecific messages
of the form ``invalid something'', which is almost useless information in the
absence of a very verbose context description. The major problem is a lack of
context information provided by non-mainstream compilers. There appears to be a
strong focus on a procedural style of programming, leading to the assumption,
that pointing to the line in the source code where an error occurs provides
sufficient information---in C++ it does not: When a code instantiates a
template, e.g., ten times, four of which contain something \emph{invalid},
printing the same line number four times is not helpful. The fact, that
\texttt{g++} and \texttt{clang++} compilers sometimes produce screens upon
screens of a single error message in some template instantiation is a source of
much ridicule of C++, but it is very important to have this information in any
non-trivial application. Template instantiation generates code at compile time.
Consequently, that one line may have four different meanings when the error
occurs and six more different meanings where the template is instantiated
without causing a compiler error.  Thus, it is important for the programmer to
know \emph{which} instance of the template causes the error, otherwise they are
left guessing.

We also observed bugs in the error reporting of compilers. For example, a
compiler may print an error message pointing to the correct line number, but
name the wrong file, specifically complaining about a line in a header, while
giving the name of the main source file.

\subsubsection{Alpaka test suite}

Targeting the host, all tests pass with OpenMP and
OpenACC using clang 11+ and NVHPC 21.7, respectively.

Using the most current upstream clang%
\footnote{Git commit
{c20cb5547ddd}}%
, most tests compile targeting AMD GPUs, some fail with \glspl{ice}, two due
to missing \texttt{cmath} symbols for device code. All tests fail at run time
when using clang \texttt{main} because of the aforementioned issue crashing any
alpaka kernel. Using ROC clang, the linker hangs with most of the tests.

With OpenACC, targeting NVIDIA GPUs, the majority of tests compile and succeed
at run time.  Most notably, tests of the block-level thread synchronization and
block-shared memory succeed on GPU.

\subsection{Alpaka and PIConGPU}

\paragraph{PIConGPU} is a plasma physics code that simulates the dynamics of
fast charged particles  in  electromagnetic  fields  taking  into  account
relativistic  effects  and fields  generated  by  moving  particles.  The
employed  particle-in-cell  approach does  store  electric  and  magnetic
fields  on  a  regular  grid  but  also  must  keep track of quickly moving
particles.  Particles are stored on a per-supercell basis using a dynamic
collection of fixed-sized particle vectors.  Kernels implementing particle-grid
operations on GPUs collectively copy nearby field values between device memory
and on-chip scratch memory (e.g. \verb|__shared__| in CUDA) to facilitate
efficient parallel processing of particles.  This approach takes the
hierarchical architecture of GPUs into account and was initially implemented
using CUDA directly.

PIConGPU uses templates and \gls{tmp} to
provide a \gls{dsl} for the user to describe the types
of particles, interactions and external fields present in the simulation. Some
numerical parameters of these are also fixed at compile time. This incurs a
large number of \texttt{constexpr} variables of static lifetime, either as
static class members or global inside namespaces, to be defined as part of the
simulation definition.

\paragraph{Alpaka} was introduced to make PIConGPU portable without duplicating
code for different target architectures while retaining the present performance
on GPUs. To this end, alpaka provides abstract forms of all major concepts
present in CUDA, including the execution hierarchy, atomics, block-level synchronization
primitives and shared memory as well as a generalize device and memory
management API. To generalize these concepts alpaka provides a rather verbose
API. To simplify porting codes from CUDA to alpaka the wrapper library
cupla~\cite{cupla} was created which provides a simplified API which is more
similar to CUDA. Other applications also adopted alpaka as their abstraction for
offloading, such as a ptychography code and a high-level trigger software in a
large-scale particle detector.

Alpaka currently provides a backend targeting sequential execution, backends for parallel
execution on the host via OpenMP and \gls{tbb}, as well as on GPUs using CUDA and
HIP. A SYCL backend is also under development~\cite{alpakaSYCL}.
Alpaka's codebase~\cite{alpaka} contains some examples, ranging from a parallel
``Hello World'' to Euler integration. All backends are also covered by a suite
of tests, each of which tests a different aspect of offloading. One test
focuses on transferring memory between buffers on host and device, including
multiple cases covering different source and device locations and buffer sizes.
Other tests cover aspects of kernel execution on the device, like trivial
kernels, variables in block-shared memory, synchronization between threads or
atomic operations.

\subsection{Review of OpenACC and OpenMP target}

Both OpenACC and OpenMP \texttt{target} have been designed with GPUs or similar
accelerators as offload target devices in mind. Both expose the same two main layers of
parallelization on target devices as known from GPUs: A work grid is first decomposed into
loosely coupled blocks executing independently, which in turn decompose into
threads which execute in at least such a way that data sharing may be
exclusively between threads of the same block. Both models can also target CPUs,
where implementations tend to limit the number of threads per block, often
to one, in order to effectively map blocks to CPU threads.
An overview on the names the
different models assign to these layers is provided in
table~\ref{tab:alpakaOmpOaccLayers}. We will stick to the CUDA/Alpaka naming
scheme.

\begin{table}[bt]
 \centering
 \caption{\label{tab:alpakaOmpOaccLayers}
  Rosetta-stone for the names of parallel execution layers. The
  \texttt{element}/\texttt{simd} layer is only listed for completeness.
  Each model using a different set of terms pollutes the name space, which is
  why we stick to the CUDA/Alpaka terminology in the text.
  Where the word ``worker'' is used it refers to a scheduled unit executing some
  work on any parallel level, not to the OpenACC \texttt{worker}.
 }
 \begin{tabular}{llll}
  \multicolumn{1}{c}{CUDA} & \multicolumn{1}{c}{Alpaka} &
  \multicolumn{1}{c}{OpenMP 5.0} & \multicolumn{1}{c}{OpenACC 3.0} \\
  \hline
   grid & grid & (target) & (parallel) \\
   block & block & team & gang \\
   thread & thread & thread & worker \\
   --- & element & simd & (vector) \\
 \end{tabular}
\end{table}

OpenACC adds a third innermost layer called \texttt{vector} as a straight
continuation of this concept, which could conceivably be translated in the same
way as OpenMP's \texttt{simd} loop on some architectures. While alpaka does
provide an \texttt{element} layer inside threads, no abstraction is provided
beyond offering a work-partitioning concept to support canonical \texttt{for}
loops, ideally with compile-time length which a compiler can automatically
vectorize.\footnote{Alpaka is following the approach of very long instruction
word (VLIW) architectures in OpenCL in this aspect.}
As this layer is not going to be mapped explicitly we are not covering it further.

Both models provide directives to control parallel execution and data
movement between host and device. Directives start with
\begin{align*}
  &\texttt{\#pragma acc ...}&&\text{in OpenACC and}\\
  &\texttt{\#pragma omp ...}&&\text{in OpenMP.}
\end{align*}
Here, we shall briefly review the basic
primitives of the OpenACC 3.0~\cite{openacc30} and OpenMP 5.0~\cite{openmp50}
APIs to highlight their primary design aspects that affect our porting
efforts.

Execution of code on the device is initiated using the directives
\texttt{acc parallel} and \texttt{omp target}.
OpenMP provides the directives \texttt{teams} and \texttt{parallel} which cause
regions of code to be executed by multiple blocks or threads, but do not imply
any distribution of work. Loops can be distributed in these regions using the
\texttt{distribute} (blocks) and \texttt{for} (threads)
directives.
In OpenACC parallel execution and work distribution constructs are inseparably
linked with work distribution provided by the \texttt{loop gang} and
\texttt{loop worker} constructs. Herein lies the main conceptual difference
between the OpenMP and OpenACC programming models: While OpenMP aims to support
all types of parallelism, OpenACC is exclusively designed to describe data parallelism in device code.

On GPUs no assumptions about the execution order of blocks should be made, which is
reflected in OpenMP not allowing synchronization and locks across blocks, it
does, however, support them between threads of the same block, using
\texttt{barrier} and \texttt{critical}, respectively. Following its
exclusively data-parallel paradigm, OpenACC does not make any assumptions on
execution order on any level and thus does not support explicit synchronization
and locks. Because a \texttt{loop gang} region may contain multiple loops in
sequence marked with \texttt{loop worker} and \texttt{loop vector}
synchronization can be achieved implicitly within blocks.

Both APIs support atomic operations through an \texttt{atomic} directive. OpenMP
defines atomics as binding to the target device, OpenACC is less clear on this
aspect, only stating that operations are atomic between gangs.

OpenMP provides the runtime API functions \texttt{omp\_get\_team\_num()} to
determine the id of a block in device code and \texttt{omp\_get\_thread\_num()}
determine the id of a thread within a block. OpenACC does not provide this
functionality because in its strict map-reduce picture only the work items must
be identified, the workers may remain anonymous to the application code.

\subsubsection{Data Management and Declarations}

The canonical way of moving data between host and device in these models is by
declaring host storage locations to be associated to locations in device
memory and later, or in the same construct, instructing the runtime to copy data
between the host and associated device locations. We will not elaborate on the
\texttt{omp target data} and \texttt{acc data} directives because in our port we
are using runtime API functions which allow for explicit memory management
instead. These are listed in table~\ref{tab:memAPI}.

\begin{table}[t]
 \caption{\label{tab:memAPI}
  Overview of OpenMP and OpenACC manual memory management routines with CUDA
  versions listed as reference.
 }
 \centering
  \begin{tabular}{lll}
  \multicolumn{1}{c}{CUDA} &
  \multicolumn{1}{c}{OpenMP 5.0} & \multicolumn{1}{c}{OpenACC 3.0} \\
  \hline
   \texttt{cudaMalloc} & \texttt{omp\_target\_alloc} & \texttt{acc\_malloc} \\
   \texttt{cudaMemcpy} & \texttt{omp\_target\_memcpy} &
    \begin{minipage}[t]{28ex}
     \texttt{acc\_memcpy\_to\_device} \\
     \texttt{acc\_memcpy\_from\_device} \\
     \texttt{acc\_memcpy\_device}
    \end{minipage}\\
   \texttt{cudaFree} & \texttt{omp\_target\_free} & \texttt{acc\_free} \\
 \end{tabular}
\end{table}

Clauses related to data movement may also be present in \texttt{omp target} and
\texttt{acc parallel} constructs where they declare how the listed variables
should be handled before the start and after the end of the attached
region. On the OpenACC side these include \texttt{copy},
\texttt{copyin}, \texttt{copyout}, \texttt{create} and others. OpenMP uses the
\texttt{map} clause, which handles details through a \texttt{map-type} attribute.

Global variables, including compile-time constants, must be \emph{declared} for
presence on the device. In OpenACC this is done through the construct
\texttt{acc declare copyin( \textit{varList}~)}, where \textit{varList} is a list
variables that are declared for the device. With OpenMP global variables can be
made available to device code either, in a similar way, using the \texttt{omp
declare target( \textit{varList}~)} construct or by declaring them inside a
\texttt{declare target} region.  Implementations relax this requirement and only
require declaration of compile time constants if they are not optimized out and
the compiler places the value in run-time memory. Violations of this relaxed
requirement get expressed as linker errors.

Similar constructs are also used to declare functions to be compiled for the
device, so they can be called from offloaded code in other compilation units.
Functions defined in the same compilation unit can be called without having been
declared for the device.

\subsection{Experimental Setup}

Initially, we started out testing various compilers. For the OpenMP we tried
\emph{Clang}, AMD's Clang-based development compiler AOMP version 0.7, AMD's ROC
variant of Clang version 4.3.0 (based on Clang 13)~\cite{rocmclang}, GCC
version 9, and IBM XL version 16.1.1-5. For
OpenACC NVIDIA's \emph{NVHPC} toolkit versions from 20.3 to 21.7 and GCC
versions 9 through 11 were used. We stopped testing with GCC and
IBM XL due to fixes to reported bugs not becoming available timely enough to fit
the scope of this work. In the case of IBM XL, debugging runtime errors also
turned out to be infeasible due to prohibitively long compile times. We dropped
AOMP due repeated difficulty building new releases and also most fixes to bugs
AOMP inherited from upstream clang being available upstream first.

Extensive testing was done only for OpenMP using Clang version 10 and above,
primarily tracking the \texttt{main} branch,
targeting host (x86\footnote{Intel i7-4930K\label{fn:cpux86}, Ubuntu 18.04}) and AMD GPUs
(HSA\footnote{Radeon Vega 64, Ubuntu 18.04}) and for OpenACC using the latest NVHPC
release, currently 21.7, targeting host (x86\textsuperscript{\ref{fn:cpux86}}) and
NVIDIA GPUs\footnote{GTX Titan Blac
, Ubuntu 18.04}.
We only used ROC Clang for a few tests prior to this paper.
Our testing was strictly focussed on
functionality and therefore performance was not measured.

\subsubsection{Executing User Code on Device}

For each backend, alpaka provides a type \texttt{TaskKernel\texttt{BackendName}}
which wraps a user-provided
functor containing the payload code as well as the arguments that
should be passed to the functor on-device for execution in a \texttt{Queue}.
This is where alpaka's parallel levels get mapped onto the levels provided by the
backend. The listing in Figure~\ref{fig:taskKernel} illustrates the basic structure of what the alpaka
\texttt{TaskKernel} invocation could look like for both OpenMP and
OpenACC.

\begin{figure}[tp]
 \centering
\begin{lstlisting}[language=C++]
template<class Functor, class... Args>
void TaskKernel_OpenMP5_OpenACC (
  WorkDiv workDiv,   // grid size
  Functor functor,   // user functor
  Args ...args )     // user arguments
{

  // OpenMP
# pragma omp target |\label{lst:ompTarget}|
  {
# pragma omp teams distribute
    for ( int blockIdx = 0;
      blockIdx < workDiv.blocks;
      ++blockIdx )
    {
      AccOmp5 ctx ( workDiv, blockIdx ); // OpenMP backend handle |\label{lst:accOmp}|
#     pragma omp parallel
      {
        functor ( ctx, args... );
      }
    }
  }

  // OpenACC
# pragma acc parallel |\label{lst:accParallel}|
  {
#   pragma acc loop gang
    for ( int blockIdx = 0;
      blockIdx < workDiv.blocks;
      ++blockIdx )
    {
      CtxBlockOacc ctxBlock ( workDiv, blockIdx ); // OpenACC backend handle |\label{lst:accOacc}|
#     pragma acc loop worker
      for ( int threadIdx = 0;
        threadIdx < workDiv.threads;
        ++threadIdx )
      {
         // need to add threadIdx to the context info
         AccOacc ctx ( ctxBlock, threadIdx );
         functor ( ctx, args... );
      }
    }
  }
}
\end{lstlisting}
 \caption{\label{fig:taskKernel}%
  Sketch of the structure of a \texttt{TaskKernel} template which calls a
  user-provided functor with user-provided argument in a parallel context using
  OpenMP or OpenACC, also providing a handle \texttt{ctx} to enable the user to
  generically access abstracted backend features. Note, that in the actual
  implementation \texttt{TaskKernel} is a class template which stores the
  functor and the arguments as members and provides a call operator to provide
  the functionality sketched above.
 }
\end{figure}

A block-shared variable \texttt{ctx} is declared inside the \texttt{teams},
respectively \texttt{loop gang}, region, but outside of the \texttt{omp
parallel}, respectively \texttt{loop worker} region, to represent a block-context
handle to the thread. This context information includes the current block id.
More details about this are provided in the following.

\subsubsection{Memory}

Alpaka's implementation adheres to the \gls{raii} principle and provides a
buffer type for memory on each device, including the host. Therefore, alpaka does not
have a concept of fixed associations between host and device memory, but rather
allows copying data between (sections of) any pair of buffers. One implication
of this is, that the buffer types for OpenMP and OpenACC must be implemented
using the manual management routines listed in table~\ref{tab:memAPI}, but more
importantly, that any pointer to data used in device code, will be a device
pointer with no associated host memory. This leads to different complications
with each of the models.

By default both models map local variables, including function parameters to the
device automatically if they are required in the device code. OpenMP assumes
that any pointer it maps hence contains a host address and tries to replace it by
the associated device address.
If no associated address exists the value copied to the device is \texttt{0x0},
which also applies to original device pointers.
The OpenMP runtime can be instructed to copy a device pointer verbatim
using the \texttt{is\_device\_ptr( \textit{varName}~)} clause on the
\texttt{target} directive in line~\ref{lst:ompTarget} or on additional
\texttt{omp target data} directives, which alpaka cannot use directly because
any pointers are elements of a parameter pack and thus have no name.
OpenMP will not perform this replacement on pointers which are enclosed in other
data types. Thus, we can get around this problem by wrapping any kernel
parameters, which are provided by the user in a C++ parameter pack, in an
\texttt{std::tuple} or similar structure.

OpenACC performs a similar replacement of address values also for pointers found
inside structures which are mapped, taking the wrapping-workaround off the table.
Like in OpenMP, a variable can be explicitly declared as a
device pointer using the \texttt{deviceptr( \textit{varName}~)} clause on the
\texttt{parallel} directive in line~\ref{lst:accParallel}, which is not possible
because there is no way to know which parameters contain pointers without access
to static reflection.
The only other option is to add
the clause \texttt{default(present)} telling the runtime to assume, that all
variables referenced in the offloaded code are already present on the device and
do not need to be mapped. Unfortunately this also disables automatic mapping of local
variables, necessitating that all local host variables used in the
\texttt{parallel} region occur in a \texttt{copyin} clause, which is feasible
because they are named.

\subsubsection{Block and Thread Index}

Each worker needs access to information about its position in the global
execution grid in order for work distribution to work. The OpenACC variant below
line~\ref{lst:accParallel} does basically show the canonical way of distributing
work over blocks and threads verbatim. In alpaka, the indices of these two
nested loops are passed to the user code in \texttt{ctx}. Because OpenMP
provides a build-in way to retrieve the thread index via
\texttt{omp\_get\_thread\_num()} we use a parallel region without loop to avoid
the overhead passing another loop counter to the user code, while the compiler
may use hardware intrinsics to supply the user code with this information.

\subsubsection{Atomic Operations}

The set of atomic operations supported by alpaka follows the set provided by
CUDA. This includes operations like \gls{cas}, min and max next to binary
operations. Both OpenMP and OpenACC support atomic load and store as well as
binary operations with both a pure \texttt{update} and a \texttt{capture}
semantic, i.e. atomically retrieving the stored value before applying the
operation to the memory location. Only OpenMP 5.1 adds an atomic
\texttt{compare} clause~\cite{openmp51atomic}, which permits the ternary
operator which is required to implement \gls{cas}, min and max.

As a work-around these ternary operations can be implemented using a
\texttt{critical} region, which, however, does not exist in OpenACC. Not
supporting these operations is not an option as PIConGPU's on-device dynamic
memory allocator mallocMC~\cite{mallocMC} requires them. Therefore we
had to implement critical region in violation of the OpenACC standard using
device-global, grid-level and block-level locks based on more basic atomics to
cover all levels at which atomic operations may be required.

\subsubsection{Block-Shared Memory}

Alpaka provides block-shared variables in the same way CUDA does, i.e.
declaration of them is allowed at any point inside kernel/thread code. This is
not supported by our targeted models. This capability is implemented by
providing a block-shared small-object allocator \texttt{BlockSharedSt} as part
of the \texttt{ctx} object, which contains a fixed-size member array as
underlying buffer. The size of this array can only be set at compile time.
Allocations of such shared variables are carried out by a master thread,
requiring synchronization between threads of a block, after which a reference to
the allocated memory is returned to all threads. A part of aforementioned buffer
can be reserved as a shared buffer of run time-size (\texttt{BlockSharedDyn}),
analogous to CUDA dynamic shared memory.

Our expectation is, that implementations will in time be optimized to actually
store block-shared variables which fit into on-chip memory there when targeting
GPUs. As long as these variables are stored in global device memory our strategy
will at least allow these variables to reside compactly in a cache close to
executing block.

OpenMP~5.0 added the \texttt{omp allocate} directive which allows explicit
allocation of memory through the OpenMP runtime, including an
implementation-defined allocator \texttt{omp\_pteam\_mem\_alloc} which may allow
the declaration of block-shared memory akin to using CUDA's
\texttt{\_\_shared\_\_} attribute. We did not test this option yet,
because functionally, albeit conceivably with lower performance, we can make due
with the implementation described above, which is required for OpenACC either
way, and using this feature could open another angle where incomplete OpenMP~5.0
compiler support may hit us.

\subsubsection{Block-Level Barrier}

Alpaka provides a block-level barrier akin to CUDA's \verb|__syncthreads()|
which can be implemented in OpenMP using the \texttt{omp barrier} directive.

OpenACC does not support any explicit synchronization, so we again violated the OpenACC standard
by implementing a barrier using atomic operations and spin loops on counters stored in
the block-shared context variable \texttt{ctx}. This implementation works on
GPUs in practice as long as the OpenACC runtime executes exactly the number of threads per
block the code expects it to.

\subsection{Final Touches: PIConGPU}

PIConGPU uses one global variable on the target device which is not abstracted
by alpaka and thus must be declared by an \texttt{acc declare
device\_resident( \textit{varName}~)}, respectively \texttt{omp declare
target( \textit{varName}~)}, directive in the PIConGPU code.

Global \texttt{constexpr} variables, used primarily as part of the simulation
definition, for the most part only exist at compile time and influence
what code is generated for offloading.
Constants whose value the compiler cannot optimize out do require explicit
mapping to the device. This is the case for
arrays which are dynamically indexed at run time and any other constant the
address of which taken in any context, e.g. if it is used as \texttt{this}
argument of a member function call.
We chose to not map constants without run time storage explicitly to limit our
changes to the application code outside of alpaka to a minimum.

\subsubsection{OpenACC/OpenMP: Static \texttt{constexpr} Mapping}

Both OpenACC and OpenMP require global variables to be marked explicitly for
availability in device code, making no exception for compile-time constants, so
formally all compile time constants have to be declared for the
target.\footnote{In~\cite{openmp50}: Section 2.10.4, Restrictions, bullet 5} In a
code like PIConGPU this would effectively lead to each simulation definition
file starting with \texttt{omp declare target} and ending with \texttt{omp end
declare target} or, worse, \texttt{acc declare copyin(
\textit{listOfAllConstexpr}~)}. While the OpenMP version of this only makes the
declare construct devoid of meaning, the OpenACC version actually hurts the code
maintainability because each addition or removal of a constant has to be
mirrored in a second place.

Most available implementations only raise warnings when a \texttt{constexpr}
variable is referenced in a target region without having been mapped because
there is no problem unless the compiler determines, that a \texttt{constexpr}
must be addressed at run time. In this case a reference to a symbol is
generated, but no definition, eventually leading to errors during dynamic linking
at run time.

For compile time constants, the standards should require symbols to be generated
for \texttt{constexpr} variables that are defined inline if needed, as it is
easier for the compiler to determine if a given \texttt{constexpr} require a
run time representation then for the programmer.  This would be more consistent
with inline functions, or functions defined within the same translation unit in general, not
requiring a \texttt{declare} to be callable from an offloaded region. It would also better
fit the C++-notion, that the compiler decides how to handle \texttt{constexpr}.

\subsubsection{OpenMP: \texttt{static constexpr} Members}

We started this work with only Open\-MP~4.5 being supported by compilers which
required types to not contain any \texttt{static} data members for them to be
considered mappable to target, with no exception for compile time constants.
Most compilers would only warn if mapped types contained \texttt{static} compile
time constants. However, GCC did throw an error here, which prevented us from
performing any testing of GCC's OpenMP or OpenACC\footnote{OpenACC does not
actually have this restriction, but GCC's implementation is based on the OpenMP
implementation and thus inherited this check.} implementations with PIConGPU
where, as in any \gls{tmp} code, \texttt{static constexpr} data members are too
commonplace to be removed as a workaround. OpenMP~5.0 solves this problem
by removing the restriction on \texttt{static} data members altogether.

\subsubsection{OpenACC: Lack of Explicit Block-Level Synchronization}

The lack of an explicit block-level thread barrier is the most
prominent issue our OpenACC port faces in terms of production-readiness.
Although we do have a functioning workaround for it, based on the standard not
allowing any assumption on thread scheduling, it is correct in stating, that our
solution using atomics and spin loops is not save. In practice this issue is
exacerbated by the standard API not providing any way to ascertain the actual
number of threads being run per block nor to force a certain number to be run,
leaving it to the user to find the maximum number of threads the runtime will
actually run per block on a given platform and instruct alpaka to not request
more than this. If the number actually running threads is smaller than expected,
our barrier implementation will dead-lock.

Any need for synchronization between threads could in theory be served using only
the implicit barrier after a \texttt{loop worker} region, but this is not
feasible in practice. On the surface this would require changing all kernels in
PIConGPU which employ barriers to employ loops to describe block-level
parallelism, circumventing the existing abstractions and introducing a second
implementation incompatible with, e.g., the CUDA backend. Even deeper structural
changes would be required where PIConGPU uses other libraries based on alpaka:
MallocMC provides an alpaka device function which returns information about the
allocator to all threads of a block using collective operations which require
synchronization inside the function.

When targeting any hardware which does actually not allow any assumptions about
threat execution but somehow still supports the implicit barrier after a
\texttt{loop worker} region, a compiler could still implement an explicit
barrier by first inlining the code surrounding the barrier and then
reordering it to split it into one region before the barrier and one after. Some
transformations required to achieve this may require assertions about the code
to be made which the base language does not allow in general, e.g. swapping
of inner and outer loops. Considering, that any code where data dependencies
block the required transformations would be using the barrier in an invalid way,
often leading to a dead-lock at run time, the compiler could raise an error when
it fails to transform the code to make the barrier implicit.

\subsubsection{C++: \texttt{std:tuple} Trivial Copy}

When it comes to offloading, it is very important, that types can be copied
bit-wise in order to transfer instances to the target. The C++ \gls{stl}
defines the type trait \texttt{std::is\_trivially\_copyable} which, if true,
guarantees that a bit-wise copy is safe for the given type. Composite types of
trivially copyable types are trivially copyable if the move and copy
constructors and assignment operators are trivial. For any type which is mapped
to target, clang checks this condition and issues a warning when it is not met.

The C++ \gls{stl} provides the type \texttt{std::tuple} which is very useful,
among other things, when storing parameter packs for later use, or to sneak
device pointers past the address mapping of the OpenMP runtime. Unfortunately,
the C++ standard does not require implementations of \texttt{std::tuple} to be
trivially copyable if all component types are. Both the GNU libstdc++ and LLVM's
libc++ implement \texttt{std::tuple} in a way that removes the
\texttt{std::is\_trivially\_copyable} trait. While they can still be copied
bit-wise in practice as long as all component types can be, this makes
\texttt{std::tuple} effectively unusable for offloading, because its use turns
an otherwise useful warning into noise. An active defect report against the C++
standard on this issue exists~\cite{cppTupleIssue}.

redpajama_set_name: RedPajamaArXiv